An operating system is a collection of software that manages device hardware resources and provides common services for computer programs. The operating system is a vital component of the system software in a device. The system software manages and integrates a computer's capabilities. The system software includes the operating system, utility software, device drivers, and other software tools. Application software can be considered to be the computer software that causes a computer to perform useful tasks in response to user requests. A specific instance of application software is called a software application, application program, application or app, which are used interchangeably below. Application programs usually require an operating system to function.
As more and more services are becoming available for small or mobile devices, the number of applications running in a single device has increased significantly. Usually, a mobile device is used mostly for certain specific applications, while being equipped with general purpose computing capabilities. For example, it is common to find a mobile phone that also runs a browser application, a gaming application, and a media player application, etc. On the other hand, a mobile video player device may run a gaming application and/or an email application in addition to a video application. Multiple applications or processes in the same device compete with each other by sharing the same memory resources and computation resources embedded inside the device. The operating system performs resource/memory management to deal with resource contention in concurrent computing. Examples of resource/memory management techniques are described in U.S. Pat. No. 7,827,358, and U.S. publication numbers 2012/0179882 and 2013/0332936, all of which are incorporated herein by reference.
These applications or processes consume resources of the device, such as central processing units (CPUs), memory, input/output, etc. When two or more applications are running at the same time, the competition for the resources of the device can result in user interface glitches, the device feeling sluggish, slow response to touches or other inputs, and/or the device locking up if there are insufficient resources available to be applied to the applications. Typically, when two or more applications or processes are launched, a fixed portion of the device's resources may be applied to each of the applications or processes so that each application or process cannot consume more than the assigned fixed portion of the device's resources during execution. Such a mechanism may not be sufficiently flexible under certain circumstances. For example, an application such as photo editing software may temporarily require a large amount of memory to edit a photo or an album. If such a large amount of memory exceeds the ordinary memory usage associated with the application, the application may not be able to acquire it, even though the memory resources are widely available in a data processing system.